﻿
类 主窗口类 继承 窗口类
	[绑定信息] //IDE自动生成的UI绑定信息(UI变量绑定,事件绑定), 不建议新人手动修改, 可收缩隐藏
		[基础元素类, _基础元素1, "基础元素1"]
		[按钮类, _打开, "打开"]
			[元素事件_按钮点击, 按钮点击_打开, 1]
		[编辑框类, _编辑框1, "编辑框1"]
		[按钮类, _播放, "播放"]
			[元素事件_按钮点击, 按钮点击_播放, 1]
		[按钮类, _暂停, "暂停"]
			[元素事件_按钮点击, 按钮点击_暂停, 1]
		[按钮类, _音轨, "音轨"]
			[元素事件_按钮点击, 按钮点击_音轨, 1]
		[组合框类, _下拉组合框1, "下拉组合框1"]
			[元素事件_组合框项选择, 下拉组合框1_项选择, 1]
		[滑动条类, _滑动条1, "滑动条1"]
			[元素事件_滑动条改变, 滑动条1_滑块位置改变, 1]
	文本型  _布局文件 = "main.xml"//关联的UI窗口布局文件
	VLC播放器 视频

	函数 整型 运行() //窗口启动函数, 优先自动处理内部(加载窗口布局文件, 绑定UI变量, 注册UI事件), 然后窗口创建完成, 调用用户代码
		//此处窗口已创建完成, 用户可在此处操作或导入初始数据到UI
		显示(真)  //显示出窗口

		//1、创建VLC播放器前需要把依赖插件放到调试运行目录下的plugins(默认插件目录)

		//2、也可以设置自己的外部插件目录,如果不需要请屏蔽下面代码
		视频.置插件目录("C:\\Users\\56841\\Desktop\\炫语言VLC视频播放beta\\plugins")

		主窗口._下拉组合框1.创建数据适配器()
		视频.事件_媒体通知回调 = 事件_媒体通知事件
		视频.事件_播放器通知回调 = 事件_播放器通知事件
		视频.创建(_基础元素1._句柄)


		//视频.打开URL媒体("https://www.w3school.com.cn/example/html5/mov_bbb.mp4")
		视频.打开本地媒体("test.mp4")

		返回 0
	函数 UI事件 整型 按钮点击_打开(元素句柄 来源句柄, 逻辑型* 是否拦截)
		文本型 路径 = 打开文件对话框(NULL, NULL, "视频文件|*.mp4;*.mkv",,)
		_编辑框1.置文本(路径)
		视频.打开本地媒体(路径)
		视频.置播放进度(0.5)
		
		返回 0
	函数 UI事件 整型 按钮点击_播放(元素句柄 来源句柄, 逻辑型* 是否拦截)
		整型 音轨数量 = 视频.取音轨数量()
		_下拉组合框1.删除项全部()
		计次循环 (整型 i = 0; 音轨数量)
			_下拉组合框1.添加项文本(视频.取音轨名称(i))
		视频.播放()
		
		返回 0
	函数 UI事件 整型 按钮点击_暂停(元素句柄 来源句柄, 逻辑型* 是否拦截)
		视频.暂停()
		返回 0
	函数 UI事件 整型 按钮点击_音轨(元素句柄 来源句柄, 逻辑型* 是否拦截)
		
		整型 音轨数量 = 视频.取音轨数量()
		_下拉组合框1.删除项全部()
		计次循环 (整型 i = 0; 音轨数量)
			_下拉组合框1.添加项文本(视频.取音轨名称(i))
		返回 0
	函数 UI事件 整型 下拉组合框1_项选择(元素句柄 来源句柄, 整型 项索引, 逻辑型* 是否拦截)
		视频.置音轨(项索引)
		返回 0
	函数 UI事件 整型 滑动条1_滑块位置改变(元素句柄 来源句柄, 整型 当前位置, 逻辑型* 是否拦截)
		视频.置播放进度(当前位置 / 100.0)
		返回 0

// 事件回调函数
函数 事件_媒体通知事件(常量 VLC事件类型* event, void* userData)
	//媒体信息解析完成
	如果 (event->type == VLC事件_媒体解析完成)
		整型 音轨数量 = 主窗口.视频.取音轨数量()
		调试输出("音轨数量", 音轨数量)
		主窗口._下拉组合框1.删除项全部()
		计次循环 (整型 i = 0; 音轨数量)
			调试输出("主窗口.视频.取音轨名称()", i, 主窗口.视频.取音轨名称(i))
			主窗口._下拉组合框1.添加项文本(主窗口.视频.取音轨名称(i))
	

函数 事件_播放器通知事件(常量 VLC事件类型* event, void* userData)
	//播放进度改变,事件参数为小数,代表播放进度百分比
	如果 (event->type == VLC事件_媒体播放器进度改变)
		浮点型 value = 0.0
		主窗口.视频.取事件数据(event, &value)
		主窗口._滑动条1.置当前位置(100 * value)
	


主窗口类  主窗口  //将上面IDE生成的界面类在这里定义变量(实例化到具体变量)
函数 整型 入口函数_窗口() //窗口程序入口函数, 程序启动优先进入此函数
	//在进入UI前需要运行的代码写在这里
	//炫彩_启用DPI(假)
	炫彩_初始化(真)  //初始化设计器使用的炫彩界面库
	炫彩_启用自动重绘UI(真) //当修改UI后将自动调用重绘函数更新UI
	#加载资源文件     //指示在此处自动加载资源文件, 根据项目属性设置, 从文件 或 从内存
	主窗口.运行()    //运行上面设计器生成的类中的运行()函数
	//在进入UI后需要运行的代码写在这里
	
	炫彩_运行()  //运行消息循环
	炫彩_退出()  //程序退出释放界面库资源
	返回 0


